home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs06.d81
/
moresmrt.arc
/
READ
(
.txt
)
next >
Wrap
GEOS ConVerT
|
2009-10-10
|
5KB
|
216 lines
PRG formatted GEOS file V1.0
NX1000
Write
BLASTER'S CONVERTER V2.5
READ ME FIRST
Write Image V2.0
geoWrite V2.1
@;read
SmartWatch real
clock
.if Pass1
.include geosSym
.include geosMac
.endif
.psect
ProgStart: PushB CPU_DATA ;save
config to stack ($4580)
LoadB CPU_DATA,#IO_IN ;turn
region
sei ;turn interrupts
LoadB $DC02,#$0F ;load
config 4
o/p's
sta cia1base ;states: ce
true,
lda $DC0F
and #$7F ;bit 7 to 0
sta $DC0F ;TOD clock
select
jsr SelClock ;select
clock
jsr ReadSW ;read
secs/100 & ignore
jsr ReadSW ;read
sta tmpsecs ;save
jsr ReadSW ;read
sta tmpmins ;save
jsr ReadSW ;read
hours
tax ;transfer
and #$1F ;clear
msb's
cmp #$12 ;is
twelve? (BCD)
bne 10$ ;no
txa ;get hours back
eor #$20 ;toggle
am/pm
bit (SW bit 5)
10$: txa ;get hours back
and #$1F ;clear
msb's
sta tmphrs
txa ;retrieve
and #$20 ;isolate
SW am/pm
asl a ; move it to TOD AM/PM
asl a ; bit 7
ora tmphrs ;put
hours
sta temp ;save
later
sta $DC0B ;save
TOD hours
cmp #$12 ;is
twelve?
bne 20$ ;no
lda #0 ;otherwise
20$: bit temp ;am/pm
bpl 30$ ;am - don't add 12
sed ;decimal
clc ;clear
carry
adc #$12 ;make
clock
format
cld ;leave
decimal
30$: jsr BCDtoHex ;convert
sta hour ;save
geos hours
MoveB tmpmins,$DC0A ;save
minutes
jsr BCDtoHex ;convert
sta minutes ;save
geos minutes
MoveB tmpsecs,$DC09 ;save
seconds
jsr BCDtoHex ;convert
sta hour ;save
geos hours
MoveB tmpmins,$DC0A ;save
minutes
jsr BCDtoHex ;convert
sta minutes ;save
geos minutes
MoveB tmpsecs,$DC09 ;save
seconds
jsr BCDtoHex ;convert
sta seconds ;save
geos seconds
LoadB $DC08,#0 ;start
clock
jsr ReadSW ;read
ignore
jsr ReadSW ;read
jsr BCDtoHex ;convert
sta day ;save
jsr ReadSW ;read
month
jsr BCDtoHex ;convert
sta month ;save
month
jsr ReadSW ;read
jsr BCDtoHex ;convert
sta year ;save
LoadB cia1base,#$FF ;reset init config
sta $DC01 ;
sta $DC02 ;
LoadB $DC03,#0 ;
PopB CPU_DATA ;reset
config
cli ;enable
interrupts
jsr EnterDeskTop
@;read
ReadSW: LoadB $DC02,#$E ;config
LoadB temp,#0 ;clr
ldx #8 ;count = 8
10$: LoadB cia1base,#$E ;setup
read all
LoadB cia1base,#2 ;enable
lda cia1base ;read
ror a ;rotate
lda temp ;read
ror a ;roll carry into bit 7 of temp
sta temp ;save
dex ;update
count
bne 10$
lda temp ;temp
@;BCD
convert
routine
BCDtoHex: pha ;save
value
and #$F0 ;isolate
nibble
lsr a ;and
shift
lsr a
lsr a
lsr a
tax ;mark
number
pla ;get
value
and #$0F ;clear
nibble
clc ;add
times
20$: dex
bmi 10$
adc #$0A
bne 20$
10$: rts
@;select
clock
SelClock:
@;select
clock
SelClock: LoadB cia1base,#$0E ;read
cycle
start
dallas
LoadB cia1base,#2
LoadB cia1base,#$0E
LoadB temp,#2 ;loop
counter
10$: lda #$C5
jsr WriteByte
lda #$3A
jsr WriteByte
lda #$A3
jsr WriteByte
lda #$5C
jsr WriteByte
dec temp ;decrement
counter
bne 10$
@;write
WriteByte: tax ;save
ldy #$8 ;set
count
LoadB cia1base,#$0C ;initial
config output
enable
txa ;retrieve
10$: and #$1 ;clr
sta cia1base
ora #$0C ;write
sta cia1base
dey ;decrement
count
beq 20$ ;finished?
txa ;get
lsr a ;select
tax ;save
bra 10$ ;loop
20$: rts
@.ramsect
tmphrs: .block 1
tmpmins: .block 1
tmpsecs: .block 1
temp: .block 1